#coding:utf-8
'''
1.冒泡排序
  1,4,6,2,8
每一轮中，两两比较，大的放右边，一轮过后，最大的在最右边
比较X轮，完成排序

一共要比较多少轮？每一轮比较多少次？
      x-1    
'''
def bull(a):
    #a是一个列表
    for i in range(len(a)-1): #共比较 len-1 轮
        for j in range(len(a)-1-i): #第i轮比较len(a)-1-i次
                if a[j]>a[j+1]:
                    t = a[j]
                    a[j] = a[j+1]
                    a[j+1] = t
    return a


'''
2.选择排序
     每个元素都与第一个元素进行比较，将最小的放至最左边
     一轮过后最小的在最左边，
     执行X轮
'''
def sel(a):
    for i in range(len(a)-1):#决定比较多少轮
        for j in range(i+1,len(a)):
            if a[i]>a[j]:
                t = a[i]
                a[i] = a[j]
                a[j] = t
    return a

'''
3.插入排序
把列表看做两个列表，一个是排好了序的(初识元素数量为0)
另一个是未排序的列表(就是需要排序的列表)

每次从未排序的列表中取出一个数，放入排好的列表中

'''
def ins(a):
    for i in range(1,len(a)):
        t = a[i]  #保存当前的这个数
        j = i-1   #保存前一个数
        while(j>=0 and a[j]>t):
            a[j+1] = a[j]
            a[j] = t
            j=j-1
    return a 
a = [2,4,1,4,6,23,7]    
print(ins(a))
    